package com.qh.yyxt.controller;

import com.qh.yyxt.entity.*;
import com.qh.yyxt.mapper.FlagMapper;
import com.qh.yyxt.mapper.GetAndReturnMapper;
import com.qh.yyxt.pojo.BorrowThingInfoDTO;
import com.qh.yyxt.pojo.FlagDTO;
import com.qh.yyxt.pojo.JsonForMe;
import com.qh.yyxt.pojo.entity.meeting.User;
import com.qh.yyxt.service.*;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.*;


@Controller
public class BorrowThingController {
    @Autowired
    private ThingSizeService thingSizeService;
    @Autowired
    private BorrowThingService borrowThingService;
    @Autowired
    private FlagService flagService;
    @Autowired
    private GetAndReturnMapper getAndReturnMapper;
    @Autowired
    private DelayThingService delayThingService;
    @Autowired
    private FlagMapper flagMapper;

    //添加一个申请
//    @RequestMapping("user/borrowThings")
//    @ResponseBody
//    public String addApply(Flag flag, @RequestParam("tid[]") String[] tid, @RequestParam("sid[]") String[] sid, @RequestParam("num[]") String[] num) {
//        //string转化成int int[] array = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();
//        System.out.println(flag);
//        int tId[] = Arrays.stream(tid).mapToInt(Integer::parseInt).toArray();
//        int sId[] = Arrays.stream(sid).mapToInt(Integer::parseInt).toArray();
//        int nums[] = Arrays.stream(num).mapToInt(Integer::parseInt).toArray();
//        //先判断数量是不是都小于数据库的数量
//        for (int i = 0; i < sId.length; i++) {
//            if (!thingSizeService.judgeNum(sId[i], nums[i])) {
//                return "数量超出最大限制！";
//            }
//        }
//        if (borrowThingService.newAddBorrowThing(flag, tId, sId, nums) != 0) {
//            System.out.println("申请成功"+flag);
//            return "申请成功，注意查看申请状态！";
//        }
//        return "申请失败！请稍后再试！";
//    }

    //大体查看自己的申请 记录
//    @RequestMapping("user/findFlagDTO")
//    @ResponseBody
//    public List<FlagDTO> findFlagDTOByUid() {
//        User user = (User) SecurityUtils.getSubject().getPrincipal();
//        return flagService.findByUid(user.getId());
//    }

    //查看某一个flag的详情
//    @RequestMapping("user/findFlagDTODetail")
//    @ResponseBody
//    public BorrowThingInfoDTO findFlagDTODetail(String fid) {
//        User user = (User) SecurityUtils.getSubject().getPrincipal();
//        if (fid == null) return null;
//
//        Integer fId = null;
//        try {
//            fId = Integer.parseInt(fid);
//            if (!flagService.findByFIdAndUid(fId, user.getId())) {
//                return null;
//            }
//            //System.out.println(fid+"\n"+borrowThingService.findByFid(fId));
//            return borrowThingService.findByFid(fId);
//        } catch (NumberFormatException e) {
//            //e.printStackTrace();
//        }
//        return null;
//    }

    //取物品部分-----------------------------------------------------------------------
    //待取物品的列表展示，即审批通过但未取走
//    @RequestMapping("user/toBeTaken")
//    @ResponseBody
//    public List<FlagDTO> findFlagDTOToBeTaken() {
//        User user = (User) SecurityUtils.getSubject().getPrincipal();
//        //如果是老师 或者值班人员的话 把所有人的待归还的都显示出来
//        if (user.getRole().equals("1") || user.getRole().equals("2")) {
//            String state = "审批通过";
//            return flagService.findByState(state);
//        }
//        return null;
//    }

    //添加取走记录 只能是值班人员添加
    //fid要数字！！！
//    @RequestMapping("/user/addTakeRecord")
//    @ResponseBody
//    @Transactional
//    //String fid,String gName,String gTel,String gWatch,String gMes
//    public String addTakeRecord( GetAndReturn getAndReturn) {
//        if (getAndReturn == null)
//            return "提交数据有误,都不能为空！";
//        Date date = new Date();
//        String examineState = "已借出";
//        getAndReturn.setGtime(date);
//        //添加取走记录
//        getAndReturnMapper.add(getAndReturn);
//        //修改flag记录的状态
//        Flag flag = flagMapper.selectById(getAndReturn.getFid());
//        flag.setAllReturnSigns(getAndReturn.getAllReturnSigns());
//        flag.setNeedReturnSigns(getAndReturn.getAllReturnSigns());
//        flag.setDamageis(getAndReturn.getDamageis()==0?false:true);
//        if(getAndReturn.getDamageis()==1) flag.setDamage(getAndReturn.getDamage());
//        flagMapper.updateById(flag);
////        System.out.println(getAndReturn);
////        System.out.println(flag);
//        flagService.updateInfoById(getAndReturn.getFid(), null, null, null, examineState);
//        //修改每个物品的状态
//        borrowThingService.updateStateByFid(getAndReturn.getFid(), examineState);
//        return "操作成功！";
//    }
//
//    //归还物品的部分-------------------------------------------------------------
//    //展示待归还的物品
//    @RequestMapping("user/toBeReturned")
//    @ResponseBody
//    public List<FlagDTO> findFlagDTOToBeReturned() {
//        User user = (User) SecurityUtils.getSubject().getPrincipal();
//        if (user == null) return null;
//        //如果是老师 或者值班人员的话 把所有人的待归还的都显示出来
//        if (user.getRole().equals("1") || user.getRole().equals("2")) {
//            String state = "未归还";
//            return flagService.findByState(state);
//        }
//        return null;
//    }
//
//    //展示待归还物品的详情
//    //fid要数字！！！  int fid, String rName, String rTel, String rWatch, String rMes
//    //@RequestBody List<BorrowThing>list, GetAndReturn getAndReturn
//    @RequestMapping("user/addReturnRecord")
//    @ResponseBody
//    public String addReturnRecord(@RequestBody JsonForMe jsonForMe) {
//        //{'rname':,'rtel':,'rwatch':,'rmes':,'borrowThingList':}
//        List<BorrowThing> list = jsonForMe.getBorrowThingList();
//        GetAndReturn getAndReturn = jsonForMe.getGetAndReturn();
//        for (BorrowThing borrowThing : list) {
//            BorrowThing b = borrowThingService.findById(borrowThing.getId());
//            //这个是二次归还的标志  二次归还的时候  实际归还的数量应该是小于等于损坏数量的  acnum应该是此次归还的数量
//            if (b.getBadnum() > 0) {
//                //查找相应记录
//                //System.out.println(borrowThing);
//                b.setBadnum(borrowThing.getBadnum());
//                String s = "";
//                if (b.getBadnum() > 0)
//                    s = "未归还";
//                else s = "已归还";
//                borrowThingService.updateInfo(b.getId(), borrowThing.getAcnum(), borrowThing.getBadnum(), s);
//                Date date = new Date();
//                getAndReturn.setRtime(date);
//                getAndReturnMapper.addReturn(getAndReturn);
//            } else {
//                String state = "已归还";
//                //borrowThing.setBadnum(borrowThing.getNum()-borrowThing.getAcnum());
//                if (borrowThing.getBadnum() > 0)
//                    state = "未归还";
//
//                //System.out.println(borrowThing);
//                borrowThingService.updateInfo(borrowThing.getId(), borrowThing.getAcnum(), borrowThing.getBadnum(), state);
//                //---修改归还单
//                Date date = new Date();
//                getAndReturn.setRtime(date);
//                getAndReturnMapper.addReturn(getAndReturn);
//                flagService.updateInfoById(getAndReturn.getFid(), null, null, date, null);
//            }
//        }
//
//        //修改flag
//        Integer v = borrowThingService.findByBadBum(getAndReturn.getFid());
//        String state = "部分归还";
//        Date returnTime = null;
//        if (v == null) {
//            //修改flag的状态
//            state = "已归还";
//            returnTime = new Date();
//        }
//        flagService.updateInfoById(getAndReturn.getFid(), null, null, returnTime, state);
//        Flag flag = flagMapper.selectById(getAndReturn.getFid());
//        String[] signs = jsonForMe.getSign().split(" ");
////        List<String> allSigns = Arrays.asList(flag.getAllReturnSigns().split(" "));
////        List<String> arSigns = Arrays.asList(flag.getAlreadyReturnSign().split(" "));
////        String[] arSigns = flag.getAlreadyReturnSign().split(" ");
//        String need = flag.getNeedReturnSigns();
//        for(String s:signs){
//            if(need.contains(s)){
//                need.replace(s+" ","");
//                need.replace(s,"");
//                String arReturn = flag.getAlreadyReturnSign();
//                if(null == arReturn||"".equals(arReturn)){
//                    flag.setAlreadyReturnSign(s);
//                }else {
//                    flag.setAlreadyReturnSign(arReturn+" "+s);
//                }
//            }
//        }
//        flag.setNeedReturnSigns(need);
//        flagMapper.updateById(flag);
//
//        return "归还成功！";
//    }

    //申请延时 fid delaytime
//    @RequestMapping("user/addDelayRecord")
//    @ResponseBody
//    public String addDelayRecord(DelayThing delayThing) {
//        return delayThingService.addApply(delayThing);
//    }
//
//    //用户查看个人的延时请求
//    @RequestMapping("user/findDelayThing")
//    @ResponseBody
//    public List<FlagDTO> findDelayThing() {
//        User user = (User) SecurityUtils.getSubject().getPrincipal();
//        if (user == null) return null;
//        return delayThingService.findListByUser(user.getId());
//    }
}
